<?php

/** 
 * @author Administrator
 * 
 */
class Price_mdl extends CI_Model {
	
	/**
	 * 水价配置文件路径
	 * @var string
	 */
	private $_cfgPath;
	
	/*
	 y = floor(x/a)*p1 + (x%a)*p2;
		y : 水价
		x : 取水秒数
		每a秒单价为p1,不足a秒部分为p2
	*/
	private $params = NULL;
	
	//默认水价
	private $_defPrice = array(
			array (
					'hot' =>
					array (
							'a' => 1,
							'p1' => 1,
							'p2' => 1,
					),
					'cold' =>
					array (
							'a' => 1,
							'p1' => 1,
							'p2' => 1,
					),
					'phot' =>
					array (
							'a' => 1,
					),
					'pcold' =>
					array (
							'a' => 1,
					),
					'once' => 300,
					'version' => 1,
					'sid' =>0,
			)
	);
// 	private $_defPrice = array(
// 			0=>array(
// 					'hot'=>array(
// 							'a'=>1,
// 							'p1'=>1,
// 							'p2'=>1,
// 					),
// 					'cold'=>array(
// 							'a'=>1,
// 							'p1'=>1,
// 							'p2'=>1,
// 					),
// 					'once'=>300,
// 					'version'=>1,
// 			),
// 			/*
// 			 y = floor(x/a)*p1 + (x%a)*p2;
// 			y : 水价
// 			x : 取水秒数
// 			每a秒单价为p1,不足a秒部分为p2
// 			*/
// 			1=>array(// 湖南信息学院
// 					'hot'=>array(
// 							'a'=>1,
// 							'p1'=>1,
// 							'p2'=>1,
// 					),
// 					'cold'=>array(
// 							'a'=>1,
// 							'p1'=>1,
// 							'p2'=>1,
// 					),
// 					'once'=>300,
// 					'version'=>2,
// 			)
// 	);
	
	/**
	 */
	public function __construct() {
		parent::__construct ();
		$this->_cfgPath = APPPATH.'config/waterPrice.json';
	}
	
	private function loadPrice(){
		if( NULL === $this->params ){
			$this->params = $this->_defPrice;
			
			if( file_exists($this->_cfgPath) ){
				//$data = include($this->_cfgPath);
				$data = file_get_contents($this->_cfgPath);
				if ( !empty($data) ){
					$this->params = json_decode($data,true);
				}
			}
		}
	}
	
	public function getParams( $schoolID=0 ){
		
		$this->loadPrice();//加载
		
		if ( isset($this->params[$schoolID]) ){
			return $this->params[$schoolID];
		}
		
		return $this->params[0];
	}
	
	/**
	 * 计算水费
	 * @param int $takeSec 取水秒数
	 * @param int|string $type 水类型(热水/冷水/洗衣机模式)
	 * @param int $schoolID 学校ID
	 */
	public function calculateAmount_test($takeSec,$type,$schoolID){
		
		$params = $this->getParams($schoolID);
		
		$a = 1;//默认为1
		/*
		 y = floor(x/a)*p1 + (x%a)*p2;
			y : 水价
			x : 取水秒数
			每a秒单价为p1,不足a秒部分为p2
		*/
		switch ($type) {
			case BUY_MODE_HOT://热水
			case 'hot':
				$a  = $params['hot']['a'];
				$p1 = $params['hot']['p1'];
				$p2 = $params['hot']['p2'];
				break; 
			case BUY_MODE_COLD://冷水
			case 'cold':
				$a  = $params['cold']['a'];
				$p1 = $params['cold']['p1'];
				$p2 = $params['cold']['p2'];
				break;
		    case BUY_MODE_PULES_HOT://脉冲模式热水
		    	$a  = $params['phot']['a'];
		    	break;
		    case 'phot':
				$a  = $params['phot']['a'];
				break;
			case BUY_MODE_PULES_COLD://脉冲模式冷水
				$a  = $params['pcold']['a'];
				break;
			case 'pcold':
				$a  = $params['pcold']['a'];
				break;
			case BUY_MODE_ONCE:// 洗衣机模式
			case 'once':
			default :
				return $params['once'];
				break;
		}
		
// 		if( $takeSec >= 3 ){  
// 			return round($takeSec*0.78);
// 		}
		return ceil($takeSec*$a);
// 		return $takeSec*1;
		
		
// 		return floor($takeSec/$a)*$p1+($takeSec%$a)*$p2;
	}
	/**
	 * 计算水费
	 * @param int $takeSec 取水秒数
	 * @param int|string $type 水类型(热水/冷水/洗衣机模式)
	 * @param int $schoolID 学校ID
	 */
	public function calculateAmount($takeSec,$type,$schoolID){
		 
		$params = $this->getParams($schoolID);
		$a = 1;//默认为1
		/*
		 y = floor(x/a)*p1 + (x%a)*p2;
		y : 水价
		x : 取水秒数
		每a秒单价为p1,不足a秒部分为p2
		*/
		switch ($type) {
			case BUY_MODE_HOT://热水
			case 'hot':
				$a  = $params['hot']['a'];
				$p1 = $params['hot']['p1'];
				$p2 = $params['hot']['p2'];
				break;
			case BUY_MODE_COLD://冷水
			case 'cold':
				$a  = $params['cold']['a'];
				$p1 = $params['cold']['p1'];
				$p2 = $params['cold']['p2'];
				break;
			case BUY_MODE_PULES_HOT://脉冲模式热水
				$a  = $params['phot']['a'];
				return ceil($takeSec/$a);
				break;
			case 'phot':
				$a  = $params['phot']['a'];
				break;
			case BUY_MODE_PULES_COLD://脉冲模式冷水
				$a  = $params['pcold']['a'];
				return ceil($takeSec/$a); 
				break;
			case 'pcold':
				$a  = $params['pcold']['a'];
				break;
			case BUY_MODE_ONCE:// 洗衣机模式
			case 'once':
			default :
				return $params['once'];
				break;
		}
		 
		// 			return round($takeSec*0.78);
		// 		}
		return ceil($takeSec*$a);
		// 		return $takeSec*1;
	
	
		// 		return floor($takeSec/$a)*$p1+($takeSec%$a)*$p2;
	}
}

